using System;
using System.Threading;

namespace Rhizome.Contract
{
    public interface IActiveObjectHost : IDisposable
    {
        SynchronizationContext SynchronizationContext { get; }
        void Sleep(IActiveObject obj, int timeout);
        void Add(IActiveObject obj);
        void Remove(IActiveObject obj);
        void Sleep(IActiveObject obj);
        void WakeUp(IActiveObject obj);

        /// <summary>
        ///   Starts working thread
        /// </summary>
        void Start();
    }
}